package com.m3839.sdk.ym.constant

import com.m3839.sdk.ym.core.YMManager
import java.math.RoundingMode
import java.text.DecimalFormat

/**
 * Description:默认常量字符串
 *
 * @author 陈宝阳
 * @create 2020/4/10 14: 57
 */
object YMStringConstant {

    private const val HOUR_UNIT = 60 * 60.toLong()
    private const val MINUTE_UNIT: Long = 60

    /**
     * 青少年模式对话框界面的字符串
     */
    const val YM_FCM_CONTENT = "为呵护未成年人健康成长，游戏内特别推出青少年模式，该模式下可限制游戏时长等，请监护人主动选择，并设置监护密码。"
    const val YM_FCM_ENTER = "进入青少年模式 >"
    const val YM_FCM_KNOW = "我知道了"

    /**
     * 青少年模式页面的字符串
     */
    const val YM_FCM_MODE_TITLE = "青少年模式"
    const val YM_FCM_MODE_OPEN_TITLE = "青少年模式开启"
    const val YM_FCM_MODE_OPEN_BUTTON = "开启青少年模式"
    const val YM_FCM_MODE_CLOSE_BUTTON = "关闭青少年模式"
    const val YM_FCM_MODE_MODIFY_PASSWORD_BUTTON = "修改密码"

    /**
     * 密码界面的标题字符串
     */
    const val YM_FCM_SET_PASSWORD = "设置密码"
    const val YM_FCM_CONFIRM_PASSWORD = "确认密码"
    const val YM_FCM_MODIFY_PASSWORD = "修改密码"
    const val YM_FCM_SET_NEW_PASSWORD = "请输入新密码"
    const val YM_FCM_CONFIRM_NEW_PASSWORD = "再次输入新密码"
    const val YM_FCM_CLOSE_FCM = "关闭青少年模式"
    const val YM_FCM_NIGHT_MODE = "防沉迷提示"
    const val YM_FCM_CONTINUE_FCM = "输入青少年模式密码"
    const val YM_FCM_SET_PASSWORD_TIP = "启动青少年模式，需先设置独立密码"
    const val YM_FCM_MODIFY_PASSWORD_TIP = "请输入当前密码"
    const val YM_FCM_CLOSE_FCM_TIP = "请输入密码确认"
    const val YM_FCM_CONTINUE_FCM_TIP =
        "今日你已累计使用%s小时。根据青少年模式规则，今日无法继续使用，或由监护人输入密码后继续使用，合理安排使用时间。"
    const val YM_FCM_NEXT_STEP = "下一步"
    const val YM_FCM_IMMEDIATE_VERIFY = "立即验证"
    const val YM_FCM_GET_PASSWORD_TIP = "忘记了？找回密码"

    /**
     * 夜间模式提醒页面
     */
    const val YM_FCM_NIGHT_MODE_TITLE = "夜间模式提醒"
    const val YM_FCM_EXIT_GAME = "退出游戏"

    /**
     * 找回密码页面的字符串
     */
    const val YM_FCM_GET_PASSWORD = "找回密码"


    /**
     * toast的提示语
     */
    const val YM_TOAST_PASSWORD_DIFF = "与第一次输入密码不一致"
    const val YM_TOAST_PASSWORD_ERROR = "密码输入错误，请重试"
    const val YM_TOAST_CONTACT_EMPTY = "游戏未设置找回密码联系方式"

    /**
     * 横屏底部弹出键盘带输入框确认按钮文本
     */
    const val YM_FCM_CONFIRM_BUTTON_TEXT = "确认"

    fun getModeOpenContentEx(time: Float, nightStart: Int, nightEnd: Int): String {
        return ("开启青少年模式后，将自动开启时间锁，时间锁为${time}小时。单日使用时长超过限制时间，需输入密码才能继续使用。\n"
                + "\n"
                + "青少年模式下，每日晚${nightStart}时至次日早${nightEnd}时无法进入游戏。")
    }

    fun getModeOpenContent(
        holidayTime: Float,
        normalTime: Float,
        nightStart: Int,
        nightEnd: Int
    ): String {
        return ("开启青少年模式后，将自动开启时间锁，时间锁在节假日为${holidayTime}小时，非节假日为${normalTime}小时。单日使用时长超过限制时间，需输入密码才能继续使用。\n"
                + "\n"
                + "青少年模式下，每日晚${nightStart}时至次日早${nightEnd}时无法进入游戏。")
    }

    fun getModeContent(time: Float, nightStart: Int, nightEnd: Int): String {
        return ("为呵护未成年人健康成长，游戏内特别推出青少年模式，该模式下可限制游戏时长等，请监护人主动选择，并设置监护密码。\n"
                + "\n"
                + "开启青少年模式后，将自动开启时间锁，时间锁为${time}小时。单日使用时长超过限制时间，需输入密码才能继续使用。\n"
                + "\n"
                + "青少年模式下，每日晚${nightStart}时至次日早${nightEnd}时无法进入游戏。\n"
                + "\n"
                + "开启青少年模式，需先设置独立密码，如忘记密码可通过申诉重置密码。")
    }

    /**
     * 获取剩余分钟数的字符串
     *
     * @param time Long 单位：秒数
     * @return String
     */
    fun getFloatTipMinute(time: Long): String {
        val value = if (time < MINUTE_UNIT) {
            1
        } else {
            val result = time.div(MINUTE_UNIT)
            result
        }
        return "今日剩余游戏时长：${value}分钟"
    }

    /**
     * 获取剩余小时的字符串
     * @param remainingTime Long
     * @return String
     */
    fun getFloatTipHour(remainingTime: Long): String {

        return if (remainingTime % HOUR_UNIT == 0L) {
            val value = remainingTime / HOUR_UNIT
            "今日剩余游戏时长：${value}小时"
        } else {
            //时间换算保存一位小数
            val df = DecimalFormat("#.0")
            df.roundingMode = RoundingMode.HALF_UP
            val time: Float = remainingTime * 1.0f / HOUR_UNIT
            "今日剩余游戏时长：${df.format(time.toDouble())}小时"
        }
    }

    fun getNightModeContent(nightStart: Int, nightEnd: Int): String {
        return "为呵护青少年健康成长，在青少年模式下，晚上${nightStart}时至次日早上${nightEnd}时，无法进入游戏。"
    }

    fun getPasswordContact(contact: String): String {
        return ("若你需要重置时间锁或青少年模式的密码，请发送邮件至${contact}，主题命名为【游戏名+青少年模式密码重置】"
                + "\n"
                + "\n"
                + "邮件中请您上传本人手持身份证和写有“仅用于青少年模式密码重置”纸张的照片，要求本人、身份证和纸张在同一照片中，且字迹清晰可辨。"
                + "\n"
                + "\n"
                + "您的资料仅用于密码重置申诉，申诉不会泄露您的个人信息，并会尽快为您处理。")
    }

    const val YM_FRAGMENT_TAG_MODE = "com.m3839.sdk.ym:mode"
    const val YM_FRAGMENT_TAG_MODE_OPEN = "com.m3839.sdk.ym:mode-open"
    const val YM_FRAGMENT_TAG_MODE_OPEN_NEW = "com.m3839.sdk.ym:mode-open-new"
    const val YM_FRAGMENT_TAG_MODE_NIGHT = "com.m3839.sdk.ym:mode-night"
    const val YM_FRAGMENT_TAG_PWD_SET = "com.m3839.sdk.ym:pwd-set"
    const val YM_FRAGMENT_TAG_PWD_CONFIRM = "com.m3839.sdk.ym:pwd-confirm"
    const val YM_FRAGMENT_TAG_PWD_MODIFY = "com.m3839.sdk.ym:pwd-modify"
    const val YM_FRAGMENT_TAG_PWD_SET_NEW = "com.m3839.sdk.ym:pwd-set-new"
    const val YM_FRAGMENT_TAG_PWD_SET_NEW_CONFIRM = "com.m3839.sdk.ym:pwd-set-new-confirm"
    const val YM_FRAGMENT_TAG_PWD_FCM_CONTINUE = "com.m3839.sdk.ym:fcm-continue"
    const val YM_FRAGMENT_TAG_PWD_FCM_CLOSE = "com.m3839.sdk.ym:fcm-close"
}